package com.powernode.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;

/**
 * Redis配置类
 * 用于自定义RedisTemplate的序列化方式，优化Redis操作性能
 * 在秒杀系统中负责分布式锁、库存计数、用户购买记录等核心数据的存储
 */
@Configuration
public class RedisConfig {
    /**
     * 自定义RedisTemplate配置
     * 替换Spring Boot默认的RedisTemplate，解决默认序列化方式导致的key乱码和性能问题
     * @param redisConnectionFactory Redis连接工厂（由Spring自动注入）
     * @return 配置完成的RedisTemplate实例
     */
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        RedisTemplate redisTemplate = new RedisTemplate();
        // 设置Redis连接工厂，关联Redis服务器连接
        redisTemplate.setConnectionFactory(redisConnectionFactory);

        // 设置key的序列化方式为字符串序列化
        // 解决默认JDK序列化导致的key包含类名前缀（如"\xAC\xEF\x00\x05t\x00\x06userId"）问题
        redisTemplate.setKeySerializer(new StringRedisSerializer());

        // 注意：当前配置仅设置了key的序列化方式
        // 生产环境建议补充设置value的序列化方式，如：
        // redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        // 或使用FastJson2JsonRedisSerializer提升性能

        return redisTemplate;
    }
}